package com.xunsiya.system.dao;

import com.xunsiya.system.vo.Company;
import com.xunsiya.system.vo.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

/**
 * 群组接口层
 *
 * @author fw
 * @version 1.0
 *          <p/>
 *          <br/>
 *          <br/>修订人    修订时间      描述信息
 *          <br/>-----------------------------------------------------
 *          <br/> fw     2018/11/13    初始创建
 */
public interface CompanyMapper {
	/**
	 * 新增群组
	 * @param company
	 * @return
	 */
	public void insertCompany(Company company);
	/**
	 * 新增t_videostream_company
	 * @param company
	 */
	public void insertVideoStreamCompany(Company company);
    /**
     * 修改t_videostream_company
     * @param id
     */
    public void updateVideoStreamCompany(int id);
	/**
	 * 查询群组
	 * @param companyId
	 * @return
	 */
	public List<Company> queryCompany(@Param("id") int companyId);
	/**
	 * 根据id查询群组
	 * @param id
	 * @return
	 */
	public Company queryCompanyById(@Param("id") int id);
	/**
	 * 查询群组名称
	 * @param companyName
	 * @return
	 */
	public int queryCompanyName(@Param("companyName") String companyName);
	/**
	 * 查询联系Email
	 * @param email
	 * @return
	 */
	public int queryCompanyEmail(@Param("email") String email);
	/**
	 * 删除群组
	 * @param id
	 * @return
	 */
	public void deleteCompany(int id);
	/**
	 * 查询父id
	 * @param id
	 * @return
	 */
	public int queryParentId(@Param("id") int id);
	/**
	 *查询父群组的剩余时长
	 * @param id
	 * @return
	 */
	public Company queryRemainderDuration(@Param("id") int id);
	/**
	 * 查询子群组的总时长总和
	 * @param id
	 * @return
	 */
	public Double querySumDuration(@Param("id") int id);
	/**
	 * 修改父群组的剩余时长
	 * @param id
	 * @param remainderDuration
	 * @return
	 */
	public void updateRemainderDuration(@Param("id") int id, @Param("remainderDuration") double remainderDuration);
	/**
	 * 修改企业信息
	 * @param company
	 * @return
	 */
	public void updateCompany(Company company);

	/**
	 * 修改企业分辨率
	 * @param company
	 * @return
	 */
	public void updateVideostreamCompany(Company company);

	/**
	 * 查询所有群组
	 * @return
	 */
	public List<Company> queryAllCompany();
	/**
	 * 查询所有母企业总数
	 * @param company
	 * @return
	 */
	public int queryCompanyCount(Company company);
	/**
	 * 查询所有子企业总数
	 * @param company
	 * @return
	 */
	public int querySubCompanyCount(Company company);
	/**
	 *分页查询所有母企业
	 * @param company
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 */
	public List<Company> queryCompanyForPage(@Param("company") Company company,
                                             @Param("pageIndex") int pageIndex, @Param("pageSize") int pageSize);
	/**
	 * 根据用户获取所在群组的所有下级群组
	 * @param id
	 * @return
	 */
	public List<Company> getCompanyByUser(@Param("id") int id);
	/**
	 * 查询群组下设备数量
	 * @param id
	 * @return
	 */
	public int queryDevice(@Param("id") int id);
	/**
	 * 查询群组下子群组数量
	 * @param id
	 * @return
	 */
	public int querySubCompany(@Param("id") int id);
	/**
	 *查询群组下用户数量
	 * @param id
	 * @return
	 */
	public int queryUser(@Param("id") int id);

	/**
	 * 根据公司编号查询公司信息
	 * @param companyId 公司编号
	 * @return
	 */
	public Company findParentId(Integer companyId);

	/**
	 * 根据用户名查询企业
	 *
	 * @param userName 用户名
	 * @return
	 */
	public Company findCompanyByUser(@Param("userName") String userName);
}
